The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Existing disk drive systems have been designed in such a way that a virtual volume data storage space is statically associated with physical disks with specific size and location for storing data. These disk drive systems need to know and monitor/control the exact location and size of the virtual volume of data storage space in order to store data. In addition, the systems often need bigger data storage space whereby more RAID devices are added. However, often times these additional RAID devices are expensive and not required until extra data storage space is actually needed.
FIG. 14A illustrates a prior existing disk drive system having a virtual volume data storage space associated with physical disks with specific size and location for storing, reading/writing, and/or recovering data. The disk drive system statically allocates data based on the specific location and size of the virtual volume of data storage space. As a result, emptied data storage space is not used, and extra and sometimes expensive data storage devices, e.g. RAID devices, are acquired in advance for storing, reading/writing, and/or recovering data in the system. These extra data storage space may not be needed and/or used until later in time.
RAID storage is commonly used in current data storage systems or storage area networks (SAN). Many different levels of RAID exist, including RAID 0, RAID 1, RAID 3, RAID 4, RAID 5, RAID 6, RAID 10, etc. RAID 5, for example, may use block-level striping with parity data distributed across all member disks. Generally, if data is written to a data block in a RAID 5 stripe, the parity block (P) must also be recalculated and rewritten. This requires calculating and writing the new parity to the parity block and writing the new data to the data block. This may also require reading the old data from the data block. Therefore, RAID 5 writes are relatively expensive in terms of disk operations and communication between the disks and a RAID controller. The parity blocks are read when a read of a data block results in an error. Each of the remaining data blocks and the parity block in the RAID 5 stripe are used to reconstruct the data in the data block for which the read error occurred. Should an entire disk fail in the disk array, the distributed parity blocks from the live disks are combined mathematically (i.e., exclusive OR) with the data blocks from the live disks to reconstruct the data on the failed drive.
RAID 6, from one perspective, improves RAID 5 configurations by adding an additional parity block (Q). It uses block-level striping with two parity blocks (P and Q) distributed across all member disks. Thus, RAID 6 provides protection against double disk failures, e.g., failures while a failed disk is being reconstructed. When a read of a single data block results in an error, one of the parity blocks (P) can be used to reconstruct the data in the data block. When a read of two data blocks each result in an error, both parity blocks (P and Q) are used to reconstruct the data in the data block.
Partial stripe write requests for RAID 5 and RAID 6 levels are relatively inefficient due to the need to perform read-modify-write operations to update the data and parity blocks (P for RAID 5 or P and Q for RAID 6). Therefore, RAID 5 and RAID 6 configurations generally suffer from poor performance when faced with a workload that includes many writes.
When no disks have failed, during read operations in RAID 5 and RAID 6 configurations, the parity blocks are not read. The read performances of RAID 5 and RAID 6, therefore, are generally similar to other RAID levels, such as RAID 0.
RAID 10, on the other hand, does not have the write penalty demonstrated by RAID 5 and RAID 6 levels. RAID 10 is often used for high-load databases because the lack of a parity block allows RAID 10 to have faster write speeds. RAID 10 is a particular combination of two different RAID levels—RAID 1 and RAID 0. RAID 10 is appealing because RAID 1 provides a high level of availability and RAID 0 provides the highest performance. However, RAID 5 and RAID 6 have substantially greater storage efficiency than RAID 10.
Thus, there is a need in the art for a system and method for transferring data between different RAID data storage types in a data storage system. There is a further need in the art for a system and method for transferring data between different RAID data storage types for current data and replay data. There is a similar need in the art for a system and method for transferring data between RAID 5 and/or RAID 6 levels and RAID 10 levels where the advantages of each RAID configuration can be utilized when most desirable.